package com.cotasul.negocio;

import java.util.Map;

import com.cotasul.bean.UsuarioBean;
import com.cotasul.negocio.interfaces.IUsuarioServico;
import com.cotasul.persistencia.UsuarioDao;
import com.cotasul.persistencia.interfaces.IDaoGenerico;
import com.cotasul.persistencia.interfaces.IUsuarioDao;

public class UsuarioServico<P extends UsuarioBean> extends ServicoGenerico<P> implements
		IUsuarioServico<P> {
	
	private final IUsuarioDao<P> dao;
	
	@SuppressWarnings({ "unchecked", "rawtypes" })
	public UsuarioServico() {
		this.dao = new UsuarioDao();
	}
	
	@Override
	public void alterar(P p) throws Exception {
		// TODO Auto-generated method stub
		
	}

	@Override
	public Map<String,Long> salvar(final P usuario) throws Exception {
		this.preSalvar(usuario);
		Map<String,Long> retorno = this.dao.salvar(usuario);
		this.posSalvar(usuario);
		
		return retorno; 
	}
	
	@Override
	public boolean validaNomeUsuario(String login) throws Exception {
		
		return this.dao.validaNomeUsuario(login);
	}

	@Override
	public IDaoGenerico<P> getDao() {
		return this.dao;
	}

	@Override
	public void preSalvar(P p) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void posSalvar(P p) {
		// TODO Auto-generated method stub
		
	}
	
	public void trocarSenha(P p, String senhaNova) throws Exception {
		this.dao.trocarSenha(p, senhaNova);
	}
	
	public UsuarioBean logar(P p) throws Exception{		
		return this.dao.verLogin(p);
	}
 
	public void excluir(P p) {}

	@Override
	public void alterarBloqueio(P p) throws Exception {
		this.dao.alterarBloqueio(p);
	};
}
